package com.ruoyi.common.utils.tt.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class CelebrityBasicInfo {
    private Long id;

    @JsonProperty("title")
    private String name;

    @JsonProperty("card")
    private List<CardItem> cardItems;

    @JsonProperty("image")
    private String imageUrl;

    @JsonProperty("abstract")
    private String summary;
    /**
     * 根据 key 获取对应的 value（返回第一个匹配的值）
     * @param key 如 "m63_nation"
     * @return 对应的值（如 "中国"），如果没有则返回 null
     */
    public String getValueByKey(String key) {
        if (cardItems == null || key == null) {
            return null;
        }
        return cardItems.stream()
                .filter(item -> item.getKey().contains(key))
                .findFirst()
                .map(item -> item.getValue().get(0)) // 取第一个 value
                .orElse(null);
    }

    /**
     * 获取所有匹配的 value（适用于可能有多个的情况）
     * @param key 如 "m63_masterpiece"
     * @return List<String> 或 null
     */
    public List<String> getValuesByKey(String key) {
        if (cardItems == null || key == null) {
            return null;
        }
        return cardItems.stream()
                .filter(item -> item.getKey().contains(key))
                .findFirst()
                .map(CardItem::getValue)
                .orElse(null);
    }


    // 嵌套的CardItem类（用于解析card数组）
    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class CardItem {
        @JsonProperty("key")
        private String key;

        @JsonProperty("value")
        private List<String> value;

        @JsonProperty("name")
        private String fieldName;

    }
}
